HAL TIM IRQ handler and callbacks functions migration

This section provides information about the HAL TIM callbacks register/unregister functions migration.

HAL TIM IRQ handler function

HAL1

HAL2

HAL_TIM_IRQHandler(&htim)
HAL_TIM_IRQHandler(&htim)

HAL TIM register/unregister callback functions

HAL TIM register callback

In HAL1, the function HAL_TIM_RegisterCallback() is used to register various TIM callbacks through a single function with a specific callback ID. In HAL2, distinct functions are available to register each specific TIM callback.

Function

HAL 1

HAL 2

Period elapsed callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_PERIOD_ELAPSED_CB_ID,
                         USER_TIM_PeriodElapsedCallback);
HAL_TIM_RegisterUpdateCallback(&htim,
                                USER_TIM_UpdateCallback);

Update half complete callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID,
                         USER_TIM_PeriodElapsedHalfCpltCallback);
HAL_TIM_RegisterUpdateHalfCpltCallback(&htim,
                                        USER_TIM_UpdateHalfCpltCallback);

Trigger callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_TRIGGER_CB_ID,
                         USER_TIM_TriggerCallback);
HAL_TIM_RegisterTriggerCallback(&htim,
                                 USER_TIM_TriggerCallback);

Trigger half complete callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_TRIGGER_HALF_CB_ID,
                         USER_TIM_TriggerHalfCpltCallback);
HAL_TIM_RegisterTriggerHalfCpltCallback(&htim,
                                         USER_TIM_TriggerHalfCpltCallback);

Input capture callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_IC_CAPTURE_CB_ID,
                         USER_TIM_IC_CaptureCallback);
HAL_TIM_RegisterInputCaptureCallback(&htim,
                                      USER_TIM_InputCaptureCallback);

Input capture half complete callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_IC_CAPTURE_HALF_CB_ID,
                         USER_TIM_IC_CaptureHalfCpltCallback);
HAL_TIM_RegisterInputCaptureHalfCpltCallback(&htim,
                                              USER_TIM_InputCaptureHalfCpltCallback);

Compare match / PWM pulse finished callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_OC_DELAY_ELAPSED_CB_ID,
                         USER_TIM_OC_DelayElapsedCallback);
/* or */
HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_PWM_PULSE_FINISHED_CB_ID,
                         USER_TIM_PWM_PulseFinishedCallback);
HAL_TIM_RegisterCompareMatchCallback(&htim,
                                      USER_TIM_CompareMatchCallback);

Compare match half complete callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID,
                         USER_TIM_PWM_PulseFinishedHalfCpltCallback);
HAL_TIM_RegisterCompareMatchHalfCpltCallback(&htim,
                                              USER_TIM_CompareMatchHalfCpltCallback);

Commutation callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_COMMUTATION_CB_ID,
                         USER_TIM_CommutationCallback);
HAL_TIM_RegisterCommutationCallback(&htim,
                                     USER_TIM_CommutationCallback);

Commutation half complete callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_COMMUTATION_HALF_CB_ID,
                         USER_TIM_CommutationHalfCpltCallback);
HAL_TIM_RegisterCommutationHalfCpltCallback(&htim,
                                             USER_TIM_CommutationHalfCpltCallback);

Break callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_BREAK_CB_ID,
                         USER_TIM_BreakCallback);
HAL_TIM_RegisterBreakCallback(&htim,
                               USER_TIM_BreakCallback);

Break2 callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_BREAK2_CB_ID,
                         USER_TIM_Break2Callback);
HAL_TIM_RegisterBreak2Callback(&htim,
                                USER_TIM_Break2Callback);

Encoder index callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_ENCODER_INDEX_CB_ID,
                         USER_TIM_EncoderIndexCallback);
HAL_TIM_RegisterEncoderIndexCallback(&htim,
                                      USER_TIM_EncoderIndexCallback);

Direction change callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_DIRECTION_CHANGE_CB_ID,
                         USER_TIM_DirectionChangeCallback);
HAL_TIM_RegisterDirectionChangeCallback(&htim,
                                         USER_TIM_DirectionChangeCallback);

Index error callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_INDEX_ERROR_CB_ID,
                         USER_TIM_IndexErrorCallback);
HAL_TIM_RegisterIndexErrorCallback(&htim,
                                    USER_TIM_IndexErrorCallback);

Transition error callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_TRANSITION_ERROR_CB_ID,
                         USER_TIM_TransitionErrorCallback);
HAL_TIM_RegisterTransitionErrorCallback(&htim,
                                         USER_TIM_TransitionErrorCallback);

Error callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_ERROR_CB_ID,
                         USER_TIM_ErrorCallback);
HAL_TIM_RegisterErrorCallback(&htim,
                               USER_TIM_ErrorCallback);

MSP init callback

HAL_TIM_RegisterCallback(&htim,
                         HAL_TIM_BASE_MSPINIT_CB_ID,
                         USER_TIM_BaseMspInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_IC_MSPINIT_CB_ID,
                           USER_TIM_IcMspInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_OC_MSPINIT_CB_ID,
                           USER_TIM_OcMspInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_PWM_MSPINIT_CB_ID,
                           USER_TIM_PwmMspInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_ONE_PULSE_MSPINIT_CB_ID,
                           USER_TIM_OnePulseMspInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_ENCODER_MSPINIT_CB_ID,
                           USER_TIM_EncoderMspInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID,
                           USER_TIM_HallSensorMspInitCallback);
/* Removed / Sequence changed */

MSP deinit callback

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_BASE_MSPDEINIT_CB_ID,
                           USER_TIM_BaseMspDeInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_IC_MSPDEINIT_CB_ID,
                           USER_TIM_IcMspDeInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_OC_MSPDEINIT_CB_ID,
                           USER_TIM_OcMspDeInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_PWM_MSPDEINIT_CB_ID,
                           USER_TIM_PwmMspDeInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID,
                           USER_TIM_OnePulseMspDeInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_ENCODER_MSPDEINIT_CB_ID,
                           USER_TIM_EncoderMspDeInitCallback);

HAL_TIM_RegisterCallback(&htim,
                           HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID,
                           USER_TIM_HallSensorMspDeInitCallback);
/* Removed / Sequence changed */

HAL TIM unregister callback

In HAL2, the unregister callback API HAL_TIM_UnRegisterCallback() has been removed. Instead, callbacks can be managed by re-registering the default HAL TIM weak callbacks as needed.

Function

HAL 1

HAL 2

Period elapsed callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_PERIOD_ELAPSED_CB_ID);
HAL_TIM_RegisterUpdateCallback(&htim,
                                HAL_TIM_UpdateCallback);

Update half complete callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID);
HAL_TIM_RegisterUpdateHalfCpltCallback(&htim,
                                        HAL_TIM_UpdateHalfCpltCallback);

Trigger callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_TRIGGER_CB_ID);
HAL_TIM_RegisterTriggerCallback(&htim,
                                 HAL_TIM_TriggerCallback);

Trigger half complete callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_TRIGGER_HALF_CB_ID);
HAL_TIM_RegisterTriggerHalfCpltCallback(&htim,
                                         HAL_TIM_TriggerHalfCpltCallback);

Input capture callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_IC_CAPTURE_CB_ID);
HAL_TIM_RegisterInputCaptureCallback(&htim,
                                      HAL_TIM_InputCaptureCallback);

Input capture half complete callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_IC_CAPTURE_HALF_CB_ID);
HAL_TIM_RegisterInputCaptureHalfCpltCallback(&htim,
                                              HAL_TIM_InputCaptureHalfCpltCallback);

Compare match / PWM pulse finished callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_OC_DELAY_ELAPSED_CB_ID);
HAL_TIM_RegisterCompareMatchCallback(&htim,
                                      HAL_TIM_CompareMatchCallback);

Compare match half complete callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID);
HAL_TIM_RegisterCompareMatchHalfCpltCallback(&htim,
                                              HAL_TIM_CompareMatchHalfCpltCallback);

Commutation callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_COMMUTATION_CB_ID);
HAL_TIM_RegisterCommutationCallback(&htim,
                                     HAL_TIM_CommutationCallback);

Commutation half complete callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_COMMUTATION_HALF_CB_ID);
HAL_TIM_RegisterCommutationHalfCpltCallback(&htim,
                                             HAL_TIM_CommutationHalfCpltCallback);

Break callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_BREAK_CB_ID);
HAL_TIM_RegisterBreakCallback(&htim,
                               HAL_TIM_BreakCallback);

Break2 callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_BREAK2_CB_ID);
HAL_TIM_RegisterBreak2Callback(&htim,
                                HAL_TIM_Break2Callback);

Encoder index callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_ENCODER_INDEX_CB_ID);
HAL_TIM_RegisterEncoderIndexCallback(&htim,
                                      HAL_TIM_EncoderIndexCallback);

Direction change callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_DIRECTION_CHANGE_CB_ID);
HAL_TIM_RegisterDirectionChangeCallback(&htim,
                                         HAL_TIM_DirectionChangeCallback);

Index error callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_INDEX_ERROR_CB_ID);
HAL_TIM_RegisterIndexErrorCallback(&htim,
                                    HAL_TIM_IndexErrorCallback);

Transition error callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_TRANSITION_ERROR_CB_ID);
HAL_TIM_RegisterTransitionErrorCallback(&htim,
                                         HAL_TIM_TransitionErrorCallback);

Error callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_ERROR_CB_ID);
HAL_TIM_RegisterErrorCallback(&htim,
                               HAL_TIM_ErrorCallback);

MSP init callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_BASE_MSPINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_IC_MSPINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_OC_MSPINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_PWM_MSPINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_ONE_PULSE_MSPINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_ENCODER_MSPINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID);
/* Removed / Sequence changed */

MSP deinit callback

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_BASE_MSPDEINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_IC_MSPDEINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_OC_MSPDEINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_PWM_MSPDEINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_ENCODER_MSPDEINIT_CB_ID);

HAL_TIM_UnRegisterCallback(&htim,
                           HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID);
/* Removed / Sequence changed */

HAL TIM error callback

HAL1

HAL2

void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_ErrorCallback(hal_tim_handle_t *htim);

HAL TIM update callback

HAL1

HAL2

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_UpdateCallback(hal_tim_handle_t *htim);

HAL TIM update half complete callback

HAL1

HAL2

void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_UpdateHalfCpltCallback(hal_tim_handle_t *htim);

HAL TIM input capture callback

HAL1

HAL2

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_InputCaptureCallback(hal_tim_handle_t *htim,
                                  hal_tim_channel_t channel);

HAL TIM input capture half complete callback

HAL1

HAL2

void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_InputCaptureHalfCpltCallback(hal_tim_handle_t *htim,
                                         hal_tim_channel_t channel);

HAL TIM compare match callback

HAL1

HAL2

void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_CompareMatchCallback(hal_tim_handle_t *htim,
                                  hal_tim_channel_t channel);

HAL TIM compare match half complete callback

HAL1

HAL2

void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_CompareMatchHalfCpltCallback(hal_tim_handle_t *htim,
                                         hal_tim_channel_t channel);

HAL TIM PWM pulse finished callback

HAL1

HAL2

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_CompareMatchCallback(hal_tim_handle_t *htim,
                                  hal_tim_channel_t channel);

HAL TIM trigger callback

HAL1

HAL2

void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_TriggerCallback(hal_tim_handle_t *htim);

HAL TIM trigger half complete callback

HAL1

HAL2

void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_TriggerHalfCpltCallback(hal_tim_handle_t *htim);

HAL TIM callback type definition

HAL1

HAL2

typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim);
typedef void (*hal_tim_cb_t)(hal_tim_handle_t *htim);